/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.utrans.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Gamboa
 */
@Entity
@Table(name = "empleado")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Empleado.findAll", query = "SELECT e FROM Empleado e"),
    @NamedQuery(name = "Empleado.findByCodigoEmpleado", query = "SELECT e FROM Empleado e WHERE e.codigoEmpleado = :codigoEmpleado"),
    @NamedQuery(name = "Empleado.findByDocIdentidadEmpleado", query = "SELECT e FROM Empleado e WHERE e.docIdentidadEmpleado = :docIdentidadEmpleado"),
    @NamedQuery(name = "Empleado.findByNombresEmpleado", query = "SELECT e FROM Empleado e WHERE e.nombresEmpleado = :nombresEmpleado"),
    @NamedQuery(name = "Empleado.findByApellidosEmpleado", query = "SELECT e FROM Empleado e WHERE e.apellidosEmpleado = :apellidosEmpleado"),
    @NamedQuery(name = "Empleado.findByGeneroEmpleado", query = "SELECT e FROM Empleado e WHERE e.generoEmpleado = :generoEmpleado"),
    @NamedQuery(name = "Empleado.findByFechaNacimientoEmpleado", query = "SELECT e FROM Empleado e WHERE e.fechaNacimientoEmpleado = :fechaNacimientoEmpleado"),
    @NamedQuery(name = "Empleado.findByTelefonoEmpleado", query = "SELECT e FROM Empleado e WHERE e.telefonoEmpleado = :telefonoEmpleado"),
    @NamedQuery(name = "Empleado.findByDireccionEmpleado", query = "SELECT e FROM Empleado e WHERE e.direccionEmpleado = :direccionEmpleado"),
    @NamedQuery(name = "Empleado.findByCiudadEmpleado", query = "SELECT e FROM Empleado e WHERE e.ciudadEmpleado = :ciudadEmpleado"),
    @NamedQuery(name = "Empleado.findByContrasenaEmpleado", query = "SELECT e FROM Empleado e WHERE e.contrasenaEmpleado = :contrasenaEmpleado"),
    @NamedQuery(name = "Empleado.findByPreguntaEmpleado", query = "SELECT e FROM Empleado e WHERE e.preguntaEmpleado = :preguntaEmpleado"),
    @NamedQuery(name = "Empleado.findByRespuestaEmpleado", query = "SELECT e FROM Empleado e WHERE e.respuestaEmpleado = :respuestaEmpleado"),
    @NamedQuery(name = "Empleado.findByEMailEmpleado", query = "SELECT e FROM Empleado e WHERE e.eMailEmpleado = :eMailEmpleado"),
    @NamedQuery(name = "Empleado.findByEstadoCivilEmpleado", query = "SELECT e FROM Empleado e WHERE e.estadoCivilEmpleado = :estadoCivilEmpleado"),
    @NamedQuery(name = "Empleado.findByEpsEmpleado", query = "SELECT e FROM Empleado e WHERE e.epsEmpleado = :epsEmpleado"),
    @NamedQuery(name = "Empleado.findByCargoEmpleado", query = "SELECT e FROM Empleado e WHERE e.cargoEmpleado = :cargoEmpleado"),
    @NamedQuery(name = "Empleado.findBySalarioEmpleado", query = "SELECT e FROM Empleado e WHERE e.salarioEmpleado = :salarioEmpleado"),
    @NamedQuery(name = "Empleado.findByEstadoEmpleado", query = "SELECT e FROM Empleado e WHERE e.estadoEmpleado = :estadoEmpleado"),
    @NamedQuery(name = "Empleado.findByCodigoTarjetaPasajero", query = "SELECT e FROM Empleado e WHERE e.codigoTarjetaPasajero = :codigoTarjetaPasajero"),
    @NamedQuery(name = "Empleado.findByFechaHoraCompraTarjeta", query = "SELECT e FROM Empleado e WHERE e.fechaHoraCompraTarjeta = :fechaHoraCompraTarjeta")})
public class Empleado implements Serializable {
    @Basic(optional = false)
    @NotNull
    @Column(name = "fecha_nacimiento_empleado")
    @Temporal(TemporalType.DATE)
    private Date fechaNacimientoEmpleado;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fecha_hora_compra_tarjeta")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaHoraCompraTarjeta;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "empleado")
    private List<VentaTarjeta> ventaTarjetaList;
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "codigo_empleado")
    private Integer codigoEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "doc_identidad_empleado")
    private String docIdentidadEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "nombres_empleado")
    private String nombresEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "apellidos_empleado")
    private String apellidosEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 4)
    @Column(name = "genero_empleado")
    private String generoEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 10)
    @Column(name = "telefono_empleado")
    private String telefonoEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "direccion_empleado")
    private String direccionEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "ciudad_empleado")
    private String ciudadEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "contrasena_empleado")
    private String contrasenaEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "pregunta_empleado")
    private String preguntaEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "respuesta_empleado")
    private String respuestaEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "e_mail_empleado")
    private String eMailEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "estado_civil_empleado")
    private String estadoCivilEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "eps_empleado")
    private String epsEmpleado;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "cargo_empleado")
    private String cargoEmpleado;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Basic(optional = false)
    @NotNull
    @Column(name = "salario_empleado")
    private BigDecimal salarioEmpleado;
    @Size(max = 20)
    @Column(name = "estado_empleado")
    private String estadoEmpleado;
    @Basic(optional = false)
    @NotNull
    @Column(name = "codigo_tarjeta_pasajero")
    private int codigoTarjetaPasajero;
    @OneToMany(mappedBy = "codigoDirectorEstacion")
    private List<Estacion> estacionList;

    public Empleado() {
    }

    public Empleado(Integer codigoEmpleado) {
        this.codigoEmpleado = codigoEmpleado;
    }

    public Empleado(Integer codigoEmpleado, String docIdentidadEmpleado, String nombresEmpleado, String apellidosEmpleado, String generoEmpleado, Date fechaNacimientoEmpleado, String telefonoEmpleado, String direccionEmpleado, String ciudadEmpleado, String contrasenaEmpleado, String preguntaEmpleado, String respuestaEmpleado, String eMailEmpleado, String estadoCivilEmpleado, String epsEmpleado, String cargoEmpleado, BigDecimal salarioEmpleado, int codigoTarjetaPasajero, Date fechaHoraCompraTarjeta) {
        this.codigoEmpleado = codigoEmpleado;
        this.docIdentidadEmpleado = docIdentidadEmpleado;
        this.nombresEmpleado = nombresEmpleado;
        this.apellidosEmpleado = apellidosEmpleado;
        this.generoEmpleado = generoEmpleado;
        this.fechaNacimientoEmpleado = fechaNacimientoEmpleado;
        this.telefonoEmpleado = telefonoEmpleado;
        this.direccionEmpleado = direccionEmpleado;
        this.ciudadEmpleado = ciudadEmpleado;
        this.contrasenaEmpleado = contrasenaEmpleado;
        this.preguntaEmpleado = preguntaEmpleado;
        this.respuestaEmpleado = respuestaEmpleado;
        this.eMailEmpleado = eMailEmpleado;
        this.estadoCivilEmpleado = estadoCivilEmpleado;
        this.epsEmpleado = epsEmpleado;
        this.cargoEmpleado = cargoEmpleado;
        this.salarioEmpleado = salarioEmpleado;
        this.codigoTarjetaPasajero = codigoTarjetaPasajero;
        this.fechaHoraCompraTarjeta = fechaHoraCompraTarjeta;
    }

    public Integer getCodigoEmpleado() {
        return codigoEmpleado;
    }

    public void setCodigoEmpleado(Integer codigoEmpleado) {
        this.codigoEmpleado = codigoEmpleado;
    }

    public String getDocIdentidadEmpleado() {
        return docIdentidadEmpleado;
    }

    public void setDocIdentidadEmpleado(String docIdentidadEmpleado) {
        this.docIdentidadEmpleado = docIdentidadEmpleado;
    }

    public String getNombresEmpleado() {
        return nombresEmpleado;
    }

    public void setNombresEmpleado(String nombresEmpleado) {
        this.nombresEmpleado = nombresEmpleado;
    }

    public String getApellidosEmpleado() {
        return apellidosEmpleado;
    }

    public void setApellidosEmpleado(String apellidosEmpleado) {
        this.apellidosEmpleado = apellidosEmpleado;
    }

    public String getGeneroEmpleado() {
        return generoEmpleado;
    }

    public void setGeneroEmpleado(String generoEmpleado) {
        this.generoEmpleado = generoEmpleado;
    }

    public Date getFechaNacimientoEmpleado() {
        return fechaNacimientoEmpleado;
    }

    public void setFechaNacimientoEmpleado(Date fechaNacimientoEmpleado) {
        this.fechaNacimientoEmpleado = fechaNacimientoEmpleado;
    }

    public String getTelefonoEmpleado() {
        return telefonoEmpleado;
    }

    public void setTelefonoEmpleado(String telefonoEmpleado) {
        this.telefonoEmpleado = telefonoEmpleado;
    }

    public String getDireccionEmpleado() {
        return direccionEmpleado;
    }

    public void setDireccionEmpleado(String direccionEmpleado) {
        this.direccionEmpleado = direccionEmpleado;
    }

    public String getCiudadEmpleado() {
        return ciudadEmpleado;
    }

    public void setCiudadEmpleado(String ciudadEmpleado) {
        this.ciudadEmpleado = ciudadEmpleado;
    }

    public String getContrasenaEmpleado() {
        return contrasenaEmpleado;
    }

    public void setContrasenaEmpleado(String contrasenaEmpleado) {
        this.contrasenaEmpleado = contrasenaEmpleado;
    }

    public String getPreguntaEmpleado() {
        return preguntaEmpleado;
    }

    public void setPreguntaEmpleado(String preguntaEmpleado) {
        this.preguntaEmpleado = preguntaEmpleado;
    }

    public String getRespuestaEmpleado() {
        return respuestaEmpleado;
    }

    public void setRespuestaEmpleado(String respuestaEmpleado) {
        this.respuestaEmpleado = respuestaEmpleado;
    }

    public String getEMailEmpleado() {
        return eMailEmpleado;
    }

    public void setEMailEmpleado(String eMailEmpleado) {
        this.eMailEmpleado = eMailEmpleado;
    }

    public String getEstadoCivilEmpleado() {
        return estadoCivilEmpleado;
    }

    public void setEstadoCivilEmpleado(String estadoCivilEmpleado) {
        this.estadoCivilEmpleado = estadoCivilEmpleado;
    }

    public String getEpsEmpleado() {
        return epsEmpleado;
    }

    public void setEpsEmpleado(String epsEmpleado) {
        this.epsEmpleado = epsEmpleado;
    }

    public String getCargoEmpleado() {
        return cargoEmpleado;
    }

    public void setCargoEmpleado(String cargoEmpleado) {
        this.cargoEmpleado = cargoEmpleado;
    }

    public BigDecimal getSalarioEmpleado() {
        return salarioEmpleado;
    }

    public void setSalarioEmpleado(BigDecimal salarioEmpleado) {
        this.salarioEmpleado = salarioEmpleado;
    }

    public String getEstadoEmpleado() {
        return estadoEmpleado;
    }

    public void setEstadoEmpleado(String estadoEmpleado) {
        this.estadoEmpleado = estadoEmpleado;
    }

    public int getCodigoTarjetaPasajero() {
        return codigoTarjetaPasajero;
    }

    public void setCodigoTarjetaPasajero(int codigoTarjetaPasajero) {
        this.codigoTarjetaPasajero = codigoTarjetaPasajero;
    }

    public Date getFechaHoraCompraTarjeta() {
        return fechaHoraCompraTarjeta;
    }

    public void setFechaHoraCompraTarjeta(Date fechaHoraCompraTarjeta) {
        this.fechaHoraCompraTarjeta = fechaHoraCompraTarjeta;
    }

    @XmlTransient
    public List<Estacion> getEstacionList() {
        return estacionList;
    }

    public void setEstacionList(List<Estacion> estacionList) {
        this.estacionList = estacionList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigoEmpleado != null ? codigoEmpleado.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Empleado)) {
            return false;
        }
        Empleado other = (Empleado) object;
        if ((this.codigoEmpleado == null && other.codigoEmpleado != null) || (this.codigoEmpleado != null && !this.codigoEmpleado.equals(other.codigoEmpleado))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.utrans.entity.Empleado[ codigoEmpleado=" + codigoEmpleado + " ]";
    }


    @XmlTransient
    public List<VentaTarjeta> getVentaTarjetaList() {
        return ventaTarjetaList;
    }

    public void setVentaTarjetaList(List<VentaTarjeta> ventaTarjetaList) {
        this.ventaTarjetaList = ventaTarjetaList;
    }
    
}
